/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package src;

import java.util.HashMap;
import java.util.Set;
import java.io.*;
import javax.servlet.RequestDispatcher;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class AlteraCadastro extends HttpServlet{
    
    public void doGet(HttpServletRequest request, HttpServletResponse response){
        processar(request,response);
    }
    public void doPost(HttpServletRequest request, HttpServletResponse response){
        processar(request,response);
    }

    private void processar(HttpServletRequest request, HttpServletResponse response) {
       
        try{
			PrintWriter saida = response.getWriter();
			HttpSession session = request.getSession();
			listaUsuarios listaObj = (listaUsuarios)session.getAttribute("listaObj");
			HashMap<String, Usuario> listaUser = listaObj.getListaUsuarios();
			Usuario user = (Usuario)session.getAttribute("userAtual");
			String url = null;
			
			String categoria = (String) request.getParameter("alterar");
			if(categoria.equals("Alterar Conta")){
				if(!request.getParameter("nome").equals(user.getNome())){
					user.setNome(request.getParameter("nome"));
				}
				if(!request.getParameter("sobrenome").equals(user.getSobrenome())){
					user.setSobrenome(request.getParameter("sobrenome"));
				}
				if(!request.getParameter("Nsenha").equals(user.getSenha())
					&& request.getParameter("Nsenha").equals(request.getParameter("Nsenha2"))
					&& !request.getParameter("Nsenha").isEmpty()
					&& !request.getParameter("Nsenha").equals("")){
					user.setSenha(request.getParameter("Nsenha"));
				}
				
				url = "conta.jsp";
			}else if(categoria.equals("Alterar Dados")){
				Dados dados = user.getDadosPessoais();
				if(!request.getParameter("nome").equals(dados.getNomeCompleto())){
					dados.setNomeCompleto(request.getParameter("nome"));
				}
				if(!request.getParameter("CPF").equals(dados.getCPF())){
					dados.setCPF(request.getParameter("CPF"));
				}
				if(!request.getParameter("RG").equals(dados.getRG())){
					dados.setRG(request.getParameter("RG"));
				}
				if(!request.getParameter("dNasc").equals(dados.getNascimento())){
					dados.setNascimento(request.getParameter("dNasc"));
				}
				if(!request.getParameter("sexo").equals(dados.getSexo())){
					dados.setSexo(request.getParameter("sexo"));
				}
				if(!request.getParameter("eCivil").equals(dados.getEstadoCivil())){
					dados.setEstadoCivil(request.getParameter("eCivil"));
				}
				if(!request.getParameter("nacionalidade").equals(dados.getNacionalidade())){
					dados.setNacionalidade(request.getParameter("nacionalidade"));
				}
				if(!request.getParameter("filhos").equals(dados.getFilhos())){
					dados.setFilhos(request.getParameter("filhos"));
				}
				if(!request.getParameter("cidade").equals(dados.getCidade())){
					dados.setCidade(request.getParameter("cidade"));
				}
				if(!request.getParameter("estado").equals(dados.getEstado())){
					dados.setEstado(request.getParameter("estado"));
				}
				if(!request.getParameter("pais").equals(dados.getPais())){
					dados.setPais(request.getParameter("pais"));
				}
				if(!request.getParameter("endereco").equals(dados.getEndereco())){
					dados.setEndereco(request.getParameter("endereco"));
				}
				if(!request.getParameter("numero").equals(dados.getNumero())){
					dados.setNumero(request.getParameter("numero"));
				}
				if(!request.getParameter("bairro").equals(dados.getBairro())){
					dados.setBairro(request.getParameter("bairro"));
				}
				if(!request.getParameter("CEP").equals(dados.getCEP())){
					dados.setCEP(request.getParameter("CEP"));
				}
				if(!request.getParameter("telefone").equals(dados.getTelefone())){
					dados.setTelefone(request.getParameter("telefone"));
				}
				if(!request.getParameter("celular").equals(dados.getCelular())){
					dados.setCelular(request.getParameter("celular"));
				}
				user.setDadosPessoais(dados);
				url = "dados.jsp";
			}else if(categoria.equals("Salvar Formacao")){
				HashMap<String, Formacao> formacoes = user.getFormacoes();
				Formacao formacao = new Formacao();
				formacao.setNivel(request.getParameter("nivelCurso"));
				formacao.setNome(request.getParameter("nCurso"));
				formacao.setSituacao(request.getParameter("situacao"));
				formacao.setInicio(request.getParameter("dIni"));
				formacao.setFim(request.getParameter("dFim"));
				formacao.setInstituicao(request.getParameter("nInst"));
				formacao.setEstado(request.getParameter("estado"));
				formacao.setPais(request.getParameter("pais"));
				formacoes.put(formacao.getNome(), formacao);
				user.setFormacoes(formacoes);
				url = "formacao.jsp";
			}else if(categoria.equals("Salvar Complemento")){
				if(request.getParameter("idioma") != null && request.getParameter("idioma") != "" ){
					HashMap<String, Idioma> idiomas = user.getIdiomas();
					Idioma idioma = new Idioma();
					idioma.setIdioma(request.getParameter("idioma"));
					idioma.setNivel(request.getParameter("nIdioma"));
					idiomas.put(idioma.getIdioma(), idioma);
					user.setIdiomas(idiomas);
				}
				if(request.getParameter("nomeA") != null && request.getParameter("nomeA") != ""){
					HashMap<String, AtividadeExtra> aes = user.getAtividadesExtras();
					AtividadeExtra ae = new AtividadeExtra();
					ae.setAtividade(request.getParameter("nomeA"));
					ae.setCargo(request.getParameter("cargo"));
					ae.setInicio(request.getParameter("dIni"));
					ae.setFim(request.getParameter("dFim"));
					ae.setLocal(request.getParameter("local"));
					ae.setObservacao(request.getParameter("obs"));
					aes.put(ae.getAtividade(), ae);
					user.setAtividadesExtras(aes);
				}
				if(request.getParameter("nomeC") != null && request.getParameter("nomeC") != "" ){
					HashMap<String, Curso> cursos = user.getCursos();
					Curso curso = new Curso();
					curso.setNome(request.getParameter("nomeC"));
					curso.setInicio(request.getParameter("dIni2"));
					curso.setFim(request.getParameter("dFim2"));
					curso.setInstituicao(request.getParameter("nInst"));
					curso.setConteudo(request.getParameter("conteudo"));
					cursos.put(curso.getNome(), curso);
					user.setCursos(cursos);
				}
				url = "complementar.jsp";
			}else if(categoria.equals("Salvar Experiencia")){
				HashMap<String, Experiencia> experiencias = user.getExperiencias();
				Experiencia experiencia = new Experiencia();
				experiencia.setCargo(request.getParameter("cargo"));
				experiencia.setNivel(request.getParameter("nivelCargo"));
				experiencia.setArea(request.getParameter("areaAtuacao"));
				experiencia.setInicio(request.getParameter("dIni"));
				experiencia.setFim(request.getParameter("dFim"));
				experiencia.setEmpresa(request.getParameter("nomeEmpresa"));
				experiencia.setDescricao(request.getParameter("descricao"));
				experiencia.setEstado(request.getParameter("estado"));
				experiencia.setPais(request.getParameter("pais"));
				String chave = experiencia.getCargo() + experiencia.getEmpresa();
				experiencias.put(chave, experiencia);
				user.setExperiencias(experiencias);
				url = "experiencias.jsp";
			}else if(categoria.equals("Salvar Producao")){
				HashMap<String, Producao> producoes = user.getProducoes();
				Producao producao = new Producao();
				producao.setTipo(request.getParameter("tProd"));
				producao.setAno(request.getParameter("ano"));
				producao.setTitulo(request.getParameter("titulo"));
				producao.setAutores(request.getParameter("autores"));
				producao.setCitacao(request.getParameter("citacao"));
				producoes.put(producao.getTitulo(), producao);
				user.setProducoes(producoes);
				url = "producoes.jsp";
			}
			
			listaUser.put(user.getEmail(), user);
			listaObj.setListaUsuarios(listaUser);
			session.setAttribute("listaObj", listaObj);
				
			try {
				FileOutputStream file = new FileOutputStream("usuarios.obj");
				ObjectOutputStream oos = new ObjectOutputStream(file);
				oos.writeObject(listaObj);
				oos.close();
			} catch (Exception e) {
			}
			
            RequestDispatcher dispatcher = request.getRequestDispatcher(url);
            dispatcher.forward(request, response);
            
        }catch(Exception e){
            e.printStackTrace();
		}
    }
}
